package cn.thread;

public class ThreadTest extends Thread{
    /**
     * 创建线程的三种方法
     * 继承Thread类重写run方法，创建子类对象调用start方法启动
     * 实现Runnable接口实现run方法
     * 实现callable方法实现
     * 少用继承多用实现：原因单继承有其他的类想实现就只能代码重构比较麻烦
     * 用户线程守护线程：守护线程默默工作的，为用户线程服务，守护线程必须等用户线程执行完才能结束
     */
    @Override
    public void run() {
        for(int i=0;i<10;i++){
            System.out.println("一边学习，一边听歌");
        }

    }
    public static void main(String args[]){
        ThreadTest t=new ThreadTest();
        t.start();
        for(int i=0;i<10;i++){
            System.out.println("一边学习，一边听歌");
        }
    }

}
class RunnableTest implements Runnable{

    //实现Runnable接口，实现run方法，用Thread对象包装自身对象，调用start方法
    public static void main(String args[]){
        RunnableTest001 r=new RunnableTest001();
        new Thread(r).start();//开启一个新的线程，各走各的
        for (int i=0;i<10;i++){
            System.out.println("我是run");
        }
    }
    @Override
    public void run() {
        for (int i=0;i<10;i++){
            System.out.println("我是main");
        }
    }
}
